開發的程式若需發送請求到使用自簽署憑證的 API,可以使用 Postman 發送請求測試,並在 C# 內調整連線方式。
自簽署憑證是指伺服器自行產生的憑證,未經過正式的第三方單位認證。常應用在需要加密的內部網路環境下。更詳細的資訊可參考:Yuan-Jhen Info Co., LTD. - 什麼是自簽署(self-signed)憑證?
使用 Postman 測試請求前,要先在 Postman 的設定中,於 General 頁籤裡將 SSL Certificate Verification 選項關閉,即可正常連線。
在 C# 中處理自簽署憑證的方式,有下列幾種:
調整 ServicePointManager.ServerCertificateValidationCallback
,將 callback 的結果設為 true
。需要小心使用,因為這是對系統全域性的修改。建議應手動檢查憑證內容、適用網域是否正確,或在用完後調整回原始值。(c# - Using a self-signed certificate with .NET's HttpWebRequest/Response - Stack Overflow)
在調整 ServerCertificateValidationCallback
屬性時,加入 Host 的判斷:([faq]解決C#呼叫有ssl憑證問題的網站出現遠端憑證是無效的錯誤問題 @ Alan Tsai 的學習筆記)
只用在特定 HttpWebRequest 上,程式碼如下:(c# - Best way to handle self signed certificates - Stack Overflow)
var request = (HttpWebRequest)HttpWebRequest.Create(myUri);
request.ServerCertificateValidationCallback = delegate { return true; };